package com.pipi.sso.core.redis;

/**
 * Created by qinyisheng on 16/9/21.
 */
public interface RedisService {
    /**
     * 获取数据
     *
     * @param key
     * @return
     */
    public Object get(String key);

    /**
     * 持久化存储数据
     *
     * @param key
     * @param value
     */
    public <V> void set(String key, V value);

    /**
     * 暂存数据
     *
     * @param key
     * @param value
     * @param timeMillis
     */
    public <V> void set(String key, V value, long timeMillis);

    /**
     * setnx
     *
     * @param key
     * @param value
     * @param expire 超时时间，秒。若不超时则设置0
     * @return
     */
    boolean setNX(String key, String value, int expire);

    /**
     * 该方法保证了setNX和setEX是原子操作
     * @param key
     * @param value
     * @param expire
     * @return
     */
    boolean setNXNew(String key, String value, int expire);

    /**
     * 获取数据
     *
     * @param key
     * @param t
     * @param <T>
     * @return
     */
    public <T> T get(String key, Class<T> t);

    /**
     * 删除
     *
     * @param key
     */
    public void delete(String key);

    /**
     * 存储json文本通过key
     *
     * @param key
     * @param json
     * @return
     */
    String putJson(String key, String json);

    Long expire(String redisKey, int expireTime);

    String getString(String userSessionKey);

    Long incr(String tryKey);

    String put(String key, String json, int second);
}
